/**
 * dayjs 主模块
 * 如果NPM包导入失败，使用这个本地实现
 */

// 创建一个简单的dayjs实现
function dayjs(date) {
  // 当前日期
  const now = date ? new Date(date) : new Date();
  
  // 创建实例
  const instance = {
    // 格式化日期
    format(template) {
      console.warn('使用本地 dayjs 实现，建议安装 dayjs npm 包');
      const year = now.getFullYear();
      const month = String(now.getMonth() + 1).padStart(2, '0');
      const day = String(now.getDate()).padStart(2, '0');
      const hours = String(now.getHours()).padStart(2, '0');
      const minutes = String(now.getMinutes()).padStart(2, '0');
      const seconds = String(now.getSeconds()).padStart(2, '0');
      
      if (template === 'YYYY-MM-DD') {
        return `${year}-${month}-${day}`;
      } else if (template === 'HH:mm:ss') {
        return `${hours}:${minutes}:${seconds}`;
      } else if (template === 'YYYY-MM-DD HH:mm:ss') {
        return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
      }
      
      return now.toString();
    },
    
    // 检查日期是否有效
    isValid() {
      return !isNaN(now.getTime());
    },
    
    // 获取当前日期的Unix时间戳
    unix() {
      return Math.floor(now.getTime() / 1000);
    },
    
    // 获取星期几
    day() {
      return now.getDay();
    },
    
    // 获取当月天数
    daysInMonth() {
      const nextMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
      return nextMonth.getDate();
    },
    
    // 比较两个日期
    diff(other, unit) {
      const diffMs = now.getTime() - (other._date || new Date()).getTime();
      
      if (unit === 'day') {
        return Math.floor(diffMs / (1000 * 60 * 60 * 24));
      }
      
      return diffMs;
    },
    
    // 检查当前日期是否在某日期之前
    isBefore(other) {
      return now.getTime() < (other._date || new Date()).getTime();
    },
    
    // 检查当前日期是否在某日期之后
    isAfter(other) {
      return now.getTime() > (other._date || new Date()).getTime();
    },
    
    // 保存原始日期对象，用于内部访问
    _date: now
  };
  
  // 返回实例
  return instance;
}

// 扩展
dayjs.extend = function(plugin) {
  plugin({}, dayjs);
  return dayjs;
};

// 导出dayjs
module.exports = dayjs; 